using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("PresenceMgr")]
	public class PresenceMgr : MonoClass
	{
		public struct PresenceTargets
		{
			public PresenceAdventureMode EnteringAdventureValue;

			public PresenceStatus SpectatingValue;
		}

		public static List<Type> s_enumIdList => MonoClass.smethod_7<Class251<Type>>(TritonHs.MainAssemblyPath, "", "PresenceMgr", "s_enumIdList")?.method_25();

		public List<MonoEnum> m_prevStatus => method_3<Class251<MonoEnum>>("m_prevStatus")?.method_25();

		public List<MonoEnum> m_status => method_3<Class251<MonoEnum>>("m_status")?.method_25();

		public long m_timeStartStatusMs => method_2<long>("m_timeStartStatusMs");

		public List<MonoEnum> m_richPresence => method_3<Class251<MonoEnum>>("m_richPresence")?.method_25();

		public PresenceStatus CurrentStatus => method_11<PresenceStatus>("get_CurrentStatus", Array.Empty<object>());

		public PresenceMgr(IntPtr address, string className)
			: base(address, className)
		{
		}

		public PresenceMgr(IntPtr address)
			: this(address, "PresenceMgr")
		{
		}

		public static PresenceMgr Get()
		{
			return MonoClass.smethod_15<PresenceMgr>(TritonHs.MainAssemblyPath, "", "PresenceMgr", "Get", Array.Empty<object>());
		}

		public static bool IsStatusPlayingGame(PresenceStatus status)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "PresenceMgr", "IsStatusPlayingGame", new object[1] { status });
		}

		public bool SetStatus_EnteringAdventure(AdventureDbId adventureId, AdventureModeDbId adventureModeId)
		{
			return method_11<bool>("SetStatus_EnteringAdventure", new object[2] { adventureId, adventureModeId });
		}

		public bool SetStatus_PlayingMission(ScenarioDbId missionId)
		{
			return method_11<bool>("SetStatus_PlayingMission", new object[1] { missionId });
		}

		public bool SetStatus_SpectatingMission(ScenarioDbId missionId)
		{
			return method_11<bool>("SetStatus_SpectatingMission", new object[1] { missionId });
		}

		public List<MonoEnum> GetStatus()
		{
			return method_15<Class251<MonoEnum>>("GetStatus", new Class276.Enum20[0], Array.Empty<object>())?.method_25();
		}

		public List<MonoEnum> GetPrevStatus()
		{
			return method_14<Class251<MonoEnum>>("GetPrevStatus", Array.Empty<object>())?.method_25();
		}

		public bool SetPrevStatus()
		{
			return method_11<bool>("SetPrevStatus", Array.Empty<object>());
		}

		public string GetStatusText(BnetPlayer player)
		{
			return method_12("GetStatusText", new Class276.Enum20[1] { Class276.Enum20.Class }, player);
		}

		public PresenceStatus GetStatus(BnetPlayer player)
		{
			return method_10<PresenceStatus>("GetStatus", new Class276.Enum20[1] { Class276.Enum20.Class }, new object[1] { player });
		}

		public List<MonoEnum> GetStatusEnums(BnetPlayer player)
		{
			return method_14<Class251<MonoEnum>>("GetStatusEnums", new object[1] { player })?.method_25();
		}

		public void OnShutdown()
		{
			method_8("OnShutdown");
		}

		public void ResetTelemetry()
		{
			method_8("ResetTelemetry");
		}

		public void Initialize()
		{
			method_8("Initialize");
		}
	}
}
